package cn.com.mr01.lianxi.mr_lianxi_15;

import java.io.IOException;
import java.util.Iterator;
import java.util.regex.Pattern;

import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

/**
 * 拿到的数据<"1001",["1001	张三	9001	计算机科学与技术","1001","河北省	石家庄	裕华区"]>
 * 
 * <"1002","1002	李四	9002	计算机科学与技术">
 * 
 * 输出的数据<"1001	张三	9001	计算机科学与技术", >
 * 
 * @author yingfing
 * @date 2020年11月19日 @time 下午3:25:46
 */
public class IntSumReducer extends Reducer<Text, Text, Text, NullWritable> {

	Text k = new Text();

	@Override
	protected void reduce(Text key, Iterable<Text> values, Context context)
			throws IOException, InterruptedException {

		// 累加起来
		Iterator<Text> it = values.iterator();
		// 记录总条数
		int count = 0;
		while (it.hasNext()) {
			count++;
			it.next();
		}
		if (count >= 2) {
			// 迭代器使用完之后重新创建
			it = values.iterator();
			while (it.hasNext()) {
				/**
				 * 将数据进行分割,例如
				 * 
				 * 1001 张三 9001 计算机科学与技术
				 * 
				 * --> {1001,张三,9001,计算机科学与技术}
				 */
				String itNext = it.next().toString();
				String[] results = itNext.split("\t");
				String result = "";

				// 判断课程号是不是 int
				Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
				if (pattern.matcher(results[2]).matches()) {
					// 统计最终 results中的数据
					// <"1001","1001	张三	9001	计算机科学与技术">
					result = itNext.substring(5);
					k.set(result);
					context.write(k, NullWritable.get());
				}
			}
		}
	}
}
